Connect to the volume monitor at the time of its creation
authorFederico Mena Quintero <federico@gnome.org>
Wed, 7 Sep 2011 22:46:28 +0000 (17:46 -0500)
committerFederico Mena Quintero <federico@gnome.org>
Tue, 4 Sep 2012 01:38:38 +0000 (20:38 -0500)
Signed-off-by: Federico Mena Quintero <federico@gnome.org>
gtk/gtkplacessidebar.c

index f7897feabab91af0fc0f632bb0ce131e63a19c42..a0880eb268994f1b649ec80b7ac3043cb2f91a24 100644 (file)
@@ -3031,6 +3031,33 @@ heading_cell_renderer_func (GtkTreeViewColumn *column,
        }
 }
 
+static void
+create_volume_monitor (GtkPlacesSidebar *sidebar)
+{
+       g_assert (sidebar->volume_monitor == NULL);
+
+       sidebar->volume_monitor = g_volume_monitor_get ();
+
+       g_signal_connect_object (sidebar->volume_monitor, "volume_added",
+                                G_CALLBACK (volume_added_callback), sidebar, 0);
+       g_signal_connect_object (sidebar->volume_monitor, "volume_removed",
+                                G_CALLBACK (volume_removed_callback), sidebar, 0);
+       g_signal_connect_object (sidebar->volume_monitor, "volume_changed",
+                                G_CALLBACK (volume_changed_callback), sidebar, 0);
+       g_signal_connect_object (sidebar->volume_monitor, "mount_added",
+                                G_CALLBACK (mount_added_callback), sidebar, 0);
+       g_signal_connect_object (sidebar->volume_monitor, "mount_removed",
+                                G_CALLBACK (mount_removed_callback), sidebar, 0);
+       g_signal_connect_object (sidebar->volume_monitor, "mount_changed",
+                                G_CALLBACK (mount_changed_callback), sidebar, 0);
+       g_signal_connect_object (sidebar->volume_monitor, "drive_disconnected",
+                                G_CALLBACK (drive_disconnected_callback), sidebar, 0);
+       g_signal_connect_object (sidebar->volume_monitor, "drive_connected",
+                                G_CALLBACK (drive_connected_callback), sidebar, 0);
+       g_signal_connect_object (sidebar->volume_monitor, "drive_changed",
+                                G_CALLBACK (drive_changed_callback), sidebar, 0);
+}
+
 static void
 gtk_places_sidebar_init (GtkPlacesSidebar *sidebar)
 {
@@ -3039,7 +3066,7 @@ gtk_places_sidebar_init (GtkPlacesSidebar *sidebar)
        GtkCellRenderer   *cell;
        GtkTreeSelection  *selection;
 
-       sidebar->volume_monitor = g_volume_monitor_get ();
+       create_volume_monitor (sidebar);
 
        gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sidebar),
                                        GTK_POLICY_NEVER,
@@ -3294,6 +3321,7 @@ gtk_places_sidebar_class_init (GtkPlacesSidebarClass *class)
        GTK_WIDGET_CLASS (class)->style_set = gtk_places_sidebar_style_set;
 }
 
+/* FIXME: do the following in a constructor or in ::map() */
 static void
 gtk_places_sidebar_set_parent_window (GtkPlacesSidebar *sidebar,
                                           NautilusWindow *window)
@@ -3316,25 +3344,6 @@ gtk_places_sidebar_set_parent_window (GtkPlacesSidebar *sidebar,
                                 G_CALLBACK (loading_uri_callback),
                                 sidebar, 0);
 
-       g_signal_connect_object (sidebar->volume_monitor, "volume_added",
-                                G_CALLBACK (volume_added_callback), sidebar, 0);
-       g_signal_connect_object (sidebar->volume_monitor, "volume_removed",
-                                G_CALLBACK (volume_removed_callback), sidebar, 0);
-       g_signal_connect_object (sidebar->volume_monitor, "volume_changed",
-                                G_CALLBACK (volume_changed_callback), sidebar, 0);
-       g_signal_connect_object (sidebar->volume_monitor, "mount_added",
-                                G_CALLBACK (mount_added_callback), sidebar, 0);
-       g_signal_connect_object (sidebar->volume_monitor, "mount_removed",
-                                G_CALLBACK (mount_removed_callback), sidebar, 0);
-       g_signal_connect_object (sidebar->volume_monitor, "mount_changed",
-                                G_CALLBACK (mount_changed_callback), sidebar, 0);
-       g_signal_connect_object (sidebar->volume_monitor, "drive_disconnected",
-                                G_CALLBACK (drive_disconnected_callback), sidebar, 0);
-       g_signal_connect_object (sidebar->volume_monitor, "drive_connected",
-                                G_CALLBACK (drive_connected_callback), sidebar, 0);
-       g_signal_connect_object (sidebar->volume_monitor, "drive_changed",
-                                G_CALLBACK (drive_changed_callback), sidebar, 0);
-
        g_signal_connect_swapped (nautilus_preferences, "changed::" NAUTILUS_PREFERENCES_ALWAYS_USE_BROWSER,
                                  G_CALLBACK (bookmarks_popup_menu_detach_cb), sidebar);